﻿#region Using namespaces...
using System.Collections.Generic;
using TaxonomyImportLibrary.Taxonomy.Interfaces;
using System.ComponentModel;
#endregion

namespace TaxonomyImportLibrary.Taxonomy.Views
{
	/// <summary>
	/// TermView class
	/// </summary>
	public class TermView : ITermView
	{
		#region Properties
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Term Information")]
		[Browsable(true)]
		[DisplayName("Default Label")]
		[Description("Default label or name of the taxonomy term")]
		public string DefaultLabel { get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Term Information")]
		[Browsable(true)]
		[DisplayName("Term Description")]
		[Description("Description for the taxonomy term")]
		public string Description { get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Term Information")]
		[Browsable(true)]
		[DisplayName("Language")]
		[Description("Default language for the taxonomy term")]
		public string Language { get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Term Information")]
		[Browsable(true)]
		[DisplayName("Tagging Availability")]
		[Description("Flag that allows the term to be made available for tagging")]
		public bool AvailableForTagging { get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Term Information")]
		[Browsable(true)]
		[DisplayName("Child Terms")]
		[Description("List of child terms associated with this taxonomy term")]
		public List<ITermView> ChildTerms { get; set; }
		/// <summary>
		/// Gets/Sets 
		/// </summary>
		[Category("Term Information")]
		[Browsable(true)]
		[DisplayName("Other Labels")]
		[Description("List of additional labels for the term")]
		public List<string> OtherLabels { get; set; }
		#endregion

		#region Constructors
		/// <summary>
		/// Default constructor
		/// </summary>
		public TermView() 
		{
 			// Initialize
			Initialize();
		}
		#endregion

		#region Utility
		/// <summary>
		/// Handles class initialization
		/// </summary>
		private void Initialize()
		{
			// Set Properties
			ChildTerms = new List<ITermView>();
		}
		#endregion
	}
}
